#define _CRT_SECURE_NO_WARNINGS 1
//
//void del_char(char str[], char ch)
//{
//    int sz = sizeof(str);
//    int i = 0, p = 0;
//    while (i < sz)
//    {
//        if (str[i] != ch)
//        {
//            str[p] = str[i];
//            i++;
//            p++;
//        }
//        else
//        {
//            i++;
//        }
//    }
//    str[p] = '\0';
//}
//#include <stdio.h>
//#include <string.h>
//
//void del_char(char str[], char ch);
//
//int main()
//{
//    char c, s[81];
//    gets(s);
//    c = getchar();
//    del_char(s, c);
//    puts(s);
//}

#include <stdio.h>

//int denum6(int i)
//{
//	if (i < 6)
//		return 0;
//	else
//	{
//		while (i)
//		{
//			if (i % 10 == 6)
//				return 1;
//			i /= 10;
//		}
//		return 0;
//	}
//}
//int main()
//{
//	int a = 0, b = 0;
//	int cnt = 0;
//	scanf("%d%d", &a, &b);
//	int i = 0;
//	for (i = a; i <= b; i++)
//	{
//		if (i % 6 == 0 || denum6(i))
//		{
//			printf("%-8d", i);
//			cnt++;
//			if (cnt % 6 == 0)
//			{
//				printf("\n");
//			}
//		}
//		
//	}
//	return 0;
//}

//int leap(int y)
//{
//	if (y % 4 == 0 && y % 100 != 0 || y % 400 == 0)
//		return 1;
//	else
//		return 0;
//}
//
//int main()
//{
//	int y = 0, m = 0, d = 0;
//	scanf("%04d-%02d-%02d", &y, &m, &d);
//	if (d > 1)
//		printf("%04d-%02d-%02d", y, m, d - 1);
//	else
//	{
//		if (m > 1)
//		{
//			if (m - 1 == 1 || m - 1 == 3 || m - 1 == 5 || m - 1 == 7 || m - 1 == 8 || m - 1 == 10 || m - 1 == 12)
//				printf("%04d-%02d-%02d", y, m - 1, 31);
//			else if (m - 1 == 4 || m - 1 == 6 || m - 1 == 9 || m - 1 == 11)
//				printf("%04d-%02d-%02d", y, m - 1, 30);
//			else
//			{
//				if (leap(y))
//					printf("%04d-%02d-%02d", y, m - 1, 29);
//				else
//					printf("%04d-%02d-%02d", y, m - 1, 28);
//			}
//		}
//		else
//		{
//			printf("%04d-%02d-%02d", y-1, 1 , 1);
//		}
//	}
//
//	return 0;
//}

//int anum(int i, int* arr, int k)
//{
//    int j = 0;
//    for (j = 0; j < k; j++)
//    {
//        if (arr[j] == i)
//            return 1;
//    }
//    return 0;
//}
//int Anum(int a, int* arr, int k)
//{
//    while (a)
//    {
//        if (anum(a % 10, arr, k))
//            return 0;
//        a /= 10;
//    }
//    return 1;
//}
//int main()
//{
//    int a = 0, k = 0;
//    scanf("%d%d", &a, &k);
//    int arr[10] = { 0 };
//    int i = 0;
//    for (; i < k; i++)
//        scanf("%d", arr + i);
//    int j = 1, flag = 1;
//    while (flag)
//    {
//        if (a * j > 1000000000)
//            break;
//        if (Anum(j * a, arr, k))
//        {
//            printf("%d", j * a);
//            flag = 0;
//        }
//        j++;
//    }
//    if (flag)
//        printf("None\n");
//    return 0;
//}

#include <string.h>
int search(char* arr2, char* arr1, int sz1)
{
    int i = 0;
    for (; i < sz1; i++)
    {
        if (arr2[0] == arr1[i])
            return i;
    }
    return -1;
}
int main() {
    char arr1[80] = { '\0' };
    char arr2[80] = { '\0' };
    gets(arr1);
    gets(arr2);
    int sz1 = strlen(arr1);
    int sz2 = strlen(arr2);
    if (sz1 != sz2)
    {
        printf("No\n");
    }
    else
    {
        int i = 0, j = 0;
        int flag = 1;
        int first = search(arr2, arr1, sz1);
        for (i = 0; i < sz2; i++)
        {
            j = (first + i) % sz1;
            if (arr1[j] != arr2[i])
            {
                flag = 0;
                break;
            }
        }
        if (flag)
        {
            printf("Yes\n");
        }
        else
        {
            printf("No\n");
        }
    }
    return 0;
}
